package com.lhs.controller;

import cn.dev33.satoken.stp.StpUtil;
import com.lhs.Result.Result;
import com.lhs.Service.ElasticsearchService;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.naming.directory.SearchResult;
import java.io.IOException;
import java.util.List;

@RestController
@RequestMapping("/search")
public class SearchController {

    @Autowired
    private ElasticsearchService  searchService;



    /**
     * GET /search
     * 支持分页 + 高亮 + 排序方式
     *
     * @param keyword 搜索关键字（必填）
     * @param page    页码（默认1）
     * @param size    每页大小（默认10）
     * @param sortBy  排序方式：relevance（默认，相关性）、time（按时间）、smart（混合排序）
     */
    @GetMapping("")
    public Result search(
            @RequestParam String keyword,
            @RequestParam(defaultValue = "1") int page,
            @RequestParam(defaultValue = "10") int size,
            @RequestParam(defaultValue = "relevance") String sortBy
    ) throws IOException {
        long  userId =  StpUtil.getLoginIdAsLong() ;

        // 记录搜索
        searchService.recordSearch(userId, keyword);

        return searchService.searchWithHighlight(keyword, page, size, sortBy);
    }

    @GetMapping("/hot")
    public List<String> hot(@RequestParam(defaultValue = "10") int limit) {
        return searchService.getHotSearches(limit);
    }


}
